I have found three bugs in himem.sys 2.60 that I will outline in this article. They are (1) himem.sys 2.60 doesn't correctly support the resize function which will cause it to incorrectly assign handles, (2) it doesn't correctly preserve the 32-bit AX register which can cause problems on 386 machines, and (3) the interrupt 15 handler incorrectly assumes the state of interrupts which can cause conflicts between himem.sys and the keyboard controller chip. I think that himem.sys does an iret instead of a far ret. It either incorrectly assumes the interrupts are always off or on. I think that it assumes that they are off. The information below is about the handles bug and the xmstest.exe program. Note that the first handle is numbered 2848 with himem.sys 2.60 and that since the handles take 6 bytes of memory that the handle numbers increase by 6 I.E. 2848, 2854, 2860, .... Use xmstest.exe menu selection 1 to allocate all of your xms memory. For this example lets say that you have 3456 K of xms like I do. Then use menu selection 5 to resize handle 2848 down to 3436 K. Then use menu selection 1 to allocate the 20 K that you freeed up by resizing the 3456 K block down to 3436 K. Repeat this procedure and note that the handle numbers start incrementing by 12 instead of 6 after the second or third resize. Note that himem.sys will go ahead and use the handles it skips after it has run out of handles if it doesn't have to do a resize to use them. Note that the first handle number is only 2848 on my machine it might very on others. Maybe if enough people are made aware of these bugs then Microsoft will fix them.